#include<bits/stdc++.h>
using namespace std;
const int N=1005;
const int M=10005;

struct Node{
    int s,t,w;
    Node(){}
    bool operator<(Node& node){
        return this->w<node.w;
    }
};
int n,m,k;
int fa[N];
Node node[M];

int find(int x)
{
    if(x!=fa[x]) fa[x]=find(fa[x]);
    return fa[x];
}
void merge(int a,int b)
{
    fa[find(a)]=find(b);
}

int main()
{
    scanf("%d%d%d",&n,&m,&k);
    for(int i=0;i<m;i++)
    {
        int s,t,w;
        scanf("%d%d%d",&s,&t,&w);
        node[i].s=s;
        node[i].t=t;
        node[i].w=w;
    }
    sort(node,node+m);
    for(int i=1;i<=n;i++){
        fa[i]=i;
    }
    int cnt=0;
    int ans=0;
    for(int i=0;i<m;i++)
    {
        int s0=node[i].s;
        int t0=node[i].t;
        if(find(s0)==find(t0)) continue;
        ans+=node[i].w;
        cnt++;
        if(cnt==n-k){
            break;
        }
        merge(s0,t0);
    }
    printf("%d",ans);
    return 0;
}